package com.sihan.framework.etm.mapper.business;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.dto.business.ToolBorrowReturnRecordDTO;
import com.sihan.framework.etm.entity.business.PurchasePlanDetail;
import com.sihan.framework.etm.entity.business.ToolBorrowDetail;
import com.sihan.framework.etm.entity.business.ToolBorrowPlanDetail;
import com.sihan.framework.etm.vo.business.BorrowDetailVO;
import com.sihan.framework.etm.vo.business.BorrowPlanVO;
import com.sihan.framework.etm.vo.business.ReturnDetailVO;
import com.sihan.framework.etm.vo.business.ToolBorrowReturnRecordVO;
import com.sihan.framework.etm.vo.business.ToolQueryVO;

@Mapper
public interface ToolBorrowMapper extends BaseMapper<PurchasePlanDetail, String>{

	List<BorrowPlanVO> selectLastNoDoneBorrowPlan(@Param("userId") String userId,@Param("masterId") String masterId);
	
	List<BorrowDetailVO> selectBorrowDetailByPlanId(@Param("masterId") String masterId);
	
	Long selectExpiredCountByPlanId(@Param("masterId") String masterId);
	
	List<BorrowPlanVO> selectHasNoReturnToolByUserId(@Param("userId") String userId);
	
	List<ReturnDetailVO> selectReturnDetailByMasterId(@Param("masterId") String masterId,@Param("userId") String userId);
	
	void updateToolBorrowHasReturn(@Param("masterId") String masterId,
			@Param("userId") String userId,@Param("deviceId") String deviceId);
	
	List<ToolBorrowReturnRecordVO> selectToolBorrowReturnRecord(@Param("param") ToolBorrowReturnRecordDTO dto);

	Integer getBorrowQuantity(@Param("id") String id);

	List<Map<String, String>> getBorrowQuantityEachType(@Param("id") String id);

	List<Map<String, String>> getBorrowRfidAndModel(@Param("id") String id);

	Integer getScanQuantity(@Param("rfids") List<String> rfids);
	
	List<Map<String, String>> getScanQuantityEachType(@Param("rfids") List<String> rfids);

	List<Map<String, String>> getScanRfidAndModel(@Param("rfids") List<String> rfids);

	List<Map<String, String>> getDefectQuantityEachType(@Param("rfids") List<String> rfids, @Param("id") String id);

	List<Map<String, String>> getDefectRfidAndModel(@Param("rfids") List<String> rfids, @Param("id") String id);

	ToolQueryVO getToolDetail(@Param("rfid") String rfid);

	ToolBorrowDetail getOutAndInDate(@Param("id") String id);

	void updateBorrowDetailStatus(@Param("id") String id);
	/**
	 * 
	 * @description 删除借据明细
	 * @param rfids
	 * @param masterId
	 * @auther 韩兵
	 * @Date 2020年7月18日
	 * @return void
	 */
	void deleteBorrowDetailByToolCodesAndMasterId(@Param("rfids") List<String> rfids,@Param("masterId") String masterId);
	
	/**
	 * 
	 * @description  查询用户最近一次未归还的借据
	 * @param userId
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月18日
	 * @return Long
	 */
	String selectUserLastBorrowMasterId(@Param("userId") String userId);

	List<Map<String, String>> getToolTypeList();
	
	List<BorrowPlanVO> selectActualTypeCount(@Param("masterId") String masterId);
	
	void updateBorrowToReturn(@Param("rfIds") List<String> rfIds);
	
	List<ToolBorrowDetail> selectWaitUpdateBorrowDetails(@Param("toolIds") List<String> toolIds);
	
	/**
	 * 
	 * @description 查询领用计划明细
	 * @param planName
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月27日
	 * @return List<ToolBorrowPlanDetail>
	 */
	List<ToolBorrowPlanDetail> queryBorrowPlanDetailByPlanName(@Param("planName") String planName);
	
	/**
	 * 领用计划统计
	 * @description
	 * @param planMasterId  领用计划id
	 * @param masterId 实际领用的记录id
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月30日
	 * @return List<BorrowPlanVO>
	 */
	List<BorrowPlanVO> selectBorrowPlanByMasterId(@Param("planMasterId") String planMasterId,@Param("masterId") String masterId);
	
	/**
	 * @description  根据选择的任务查询需要领取的工器具
	 * @param taskId
	 * @param masterId
	 * @return
	 * @auther 韩兵
	 * @Date 2020年12月22日
	 * @return List<BorrowPlanVO>
	 */
	List<BorrowPlanVO> selectBorrowStatisticsByMasterId(@Param("planMasterId") String planMasterId,@Param("masterId") String masterId);
}
